#include "stm32f1xx_hal.h"
// UART通信帧格式（含帧头、帧尾，防数据错乱）
#define UART_FRAME_LEN 8  // 总长度10字节
extern void UART_SlaveInit(void);
// 声明当前驱动的UART句柄（如电机1用huart2）
extern UART_HandleTypeDef huart2;
extern uint8_t uart_rx_buf[UART_FRAME_LEN]; // 接收缓冲区
extern uint8_t uart_rx_cnt;                 // 接收计数
extern void debugcom(void);

// 电机ID（主机用，通过UART端口区分）
typedef enum {
  MOTOR1,  // 对应USART2
  MOTOR2,  // 对应USART3
  MOTOR3,  // 对应UART4
  MOTOR4   // 对应UART5
} Motor_ID;

// 控制模式（与IIC版本一致）
typedef enum {
  MODE_SPEED = 0x01,    // 速度控制（param1=速度）
  MODE_POSITION = 0x02, // 位置控制（param1=位置）
  MODE_TORQUE = 0x03,  // 电流控制（param1=电流）
  MODE_SPEED_TORQUE = 0x04, // 加速度旋转到角速度（param1=角速度，param2=加速度比例）
  MODE_POSITION_SPEED_TORQUE = 0x05 // 角速度旋转到角度（param1=角度，param2=角速度）
} Control_Mode;


typedef struct {
  uint8_t head;        // 帧头（固定0xAA）
  uint8_t motor_id;    // 电机ID（冗余校验）
  uint8_t mode;        // 控制模式
  int16_t param1;      // 参数1（高8位+低8位）
  int16_t param2;      // 参数2（高8位+低8位）
  uint8_t tail;        // 帧尾（固定0x55）
} UART_Frame;


// 驱动侧处理函数声明
void UART_ProcessFrame(UART_Frame *frame);



